﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConciseMarkupLanguage.Tags;
using ConciseMarkupLanguage.Utils;

namespace CML.Tags
{
    class Form
    {
        [TemplateTag(Name = "input_button")]
        public static string button(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "button" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string checkbox(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "checkbox" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string color(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "color" } }.Merge(attrs), content);
        }

        
        [TemplateTag]
        public static string date(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "date" } }.Merge(attrs), content);
        }
        
        [TemplateTag]
        public static string datetime(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "datetime" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string datetime_local(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "datetime-local" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string email(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "email" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string file(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "file" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string hidden(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "hidden" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string image(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "image" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string month(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "month" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string number(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "number" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string password(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "password" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string radio(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "radio" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string range(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "range" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string reset(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "reset" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string submit(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "submit" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string tel(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "tel" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string text(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "text" } }.Merge(attrs), content);
        }

        [TemplateTag(Name = "input_time")]
        public static string time(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "time" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string url(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "url" } }.Merge(attrs), content);
        }

        [TemplateTag]
        public static string week(AttrDict attrs, string content)
        {
            return Html5.input(new AttrDict { { "type", "week" } }.Merge(attrs), content);
        }
    }
}
